home *** CD-ROM | disk | FTP | other *** search
- maxcrypt.c - by Permission Denied (Maxiu)
-
- No wiΩc w przyp│ywie nud≤w przyp│yn▒│ do mnie pomys│ na cryptera. R≤┐ni siΩ
- on tym od czΩsto stosowanych XORowc≤w, ┐e nawet ma│a zmiana has│a czy pliku
- wej╢ciowego powoduje du┐▒ zmianΩ pliku wyj╢ciowego.
- Algorytm kodowania polega na przesuwaj▒cym siΩ oknie z kt≤rego obliczany
- jest klucz kt≤rym nastΩpnie jest XORowany nastΩpny niekodowany bajt.
- W praktyce wygl▒da to tak, s▒ dwa bufory:
- p1 -------------------------------------
- p2 -------------------------------------
- Do obu jest wpisywane na pocz▒tku has│o:
- p1 dla dhsu-----------------------------
- p2 dla dhsu-----------------------------
- NastΩpnie │adowane s▒ dane do p1:
- p1 dla dhsu12345678901234567890123456789
- p2 dla dhsu-----------------------------
- Teraz cyklicznie jest wywo│ywana funkcja obliczaj▒ca klucz z 8 bajt≤w (taka
- jest d│ugo╢µ has│a) p1 i 8 bajt≤w p2, kluczem XORujemy p1 i wynik wpisujemy
- do p2
- p1 dla dhsu12345678901234567890123456789
- p2 dla dhsuA----------------------------
- \--\/--/
- okienko
- Przy ka┐dym nastΩpnej iteracji okienko przesuwa siΩ w prawo, a klucz jest
- obliczany tak┐e z zakodowanej czΩ╢ci danych
- p1 dla dhsu12345678901234567890123456789
- p2 dla dhsuAB---------------------------
- \--\/--/\A jest zakodowane z porzedniej iteracji, teraz jest w okienku
- okienko wiΩc nastΩpny klucz zale┐y od wcze╢niejszych oblicze±.
- Tak wiΩc po pewnym czasie, wszystko jest obliczane bez udzi│u has│a, jednak
- nadal ma ono du┐y wp│yw na kodowanie, gdy┐ decydowa│o ono o poprzednich
- XORowaniach, a one maja wp│yw dalej (zakreci│em siΩ trochΩ, ale wierzcie ┐e
- ma wp│yw).
- Troche pieprzenia by│o z wczytywaniem danych gdy┐ bufor zazwyczaj jest
- mniejszy od danych, ale uda│o mi siΩ z tym uporaµ.
- Obs│uga jest prosta, wej╢cie mo┐e byµ z pliku, wtedy podajemy jego nazwΩ,
- lub ze stdin, przez co mo┐na skierowaµ do niego jakie╢ dane. Wyj╢cie
- standardowo jest do stdout (znowu mo┐na przekierunkowaµ) lub je╢li podamy
- opcjΩ -o <nazwa> to do pliku. Has│o podajemy za pomoc▒ opcji -p <has│o> lub
- je╢li go tak nie podamy, to sam siΩ o to spyta. Maksymalna d│ugo╢µ has│a to
- po│owa bufora (512 znak≤w standardowo), ale mo┐na je wprowadziµ tylko za
- pomoc▒ -p bo pobieranie has│a od u┐ytkownika korzysta z fukcji bibliotecznej
- getpass a ona ma ograniczenie do 128 znak≤w. Ale i tak chyba styknie.
- Je╢li chcemy jeszcze bardziej zamotaµ to mo┐na u┐yµ:
- maxcrypt plikin -p <has│o1> | maxcrypt -p <has│o2> -o plikout
- Rozkodowywuj▒c nale┐y podaµ has│a w odwrotnej kolejno╢ci. Je╢li podamy dwa
- takie same has│a przy kodowaniu, to w rzeczywisto╢ci nic nie zmienimy :) np.
- ls | maxcrypt -p dupa | maxcrypt -p dupa
- wy╢wietli nam katalog bez zmian.
- Mo┐na tak┐e kodowaµ bezpo╢rednio:
- maxcrypt -p sucka -o plik
- wpisujemy z kalwiatury tak jak przy cat >, z tym mia│em sporo problem≤w bo
- powoduje to zmiane ilo╢ci wczytywanych naraz bajt≤w, ale te┐ ju┐ to
- naprawi│em.
- Aha, nie nale┐y u┐ywaµ dwa razy wpisywania has│a bez -p na raz, bo nie
- zadzia│a (oba procesy bΩd▒ chcia│y korzystaµ z klawiatury).
- Jestem pewien ┐e s▒ jeszcze b│Ωdy, ale ujawni▒ siΩ one dopiero podczas
- u┐ytkowania, wiΩc jak co╢ zauwa┐ycie to piszcie (maxiu@kki.net.pl). Wog≤le
- piszcie :)
- No to tyle na razie, owocnego cryptowania.
-
- Maxiu